package gitlet;

import java.io.PrintStream;
import javax.swing.JTextArea;

/**
 * @author 陈恒康
 * @Description PanelJTextArea类是JTextArea的子类，用于创建一个不可编辑的文本区域。这个文本区域会在文字比控件的宽度还长时自动换行，并且会在单词边界换行，而不是直接在字符边界换行。此外，这个类还设置了输出和错误输出的重定向。
 * @date 2023/12/15
 */
public class PanelJTextArea extends JTextArea {
    /**
     * @Description 构造一个新的PanelJTextArea对象。该对象不可编辑，会在文字比控件的宽度还长时自动换行，并且会在单词边界换行，而不是直接在字符边界换行。此外，这个类还设置了输出和错误输出的重定向。
     * @author 陈恒康
     * @date 2023/12/15
     */
    public PanelJTextArea() {
        // 设置为不可编辑
        this.setEditable(false);
        // 文字比控件的宽度还长时会自动换行
        this.setLineWrap(true);
        // 在单词边界换行，而不是粗暴的直接在字符边界换行
        this.setWrapStyleWord(true);
        Tools_DataRedirection out = new Tools_DataRedirection(this);
        // 设置输出重定向
        System.setOut(new PrintStream(out));
        // 将错误输出也重定向,用于e.printStackTrace
        System.setErr(new PrintStream(out));
    }
}